#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main()
{
    execl("")
    //execl("/usr/bin/top","top",NULL);
    return 0;
}

































//#include <stdlib.h>
//#include <unistd.h>
//#include <sys/types.h>
//#include <sys/wait.h>
//#include <stdio.h>
//#define TASK_NUM 5
//typedef void (*task_t)();
//
/////////////////////////////////////////////////////////////////////
//void download()
//{
//    printf("this is a download task is rnning!（正在执行下载任务）\n");
//}
//void printLog()
//{
//    printf("this is a write log task is rnning!（正在执行日志任务）\n");
//}
//void show()
//{
//    printf("this is a show info task is rnning!（正在执行显示信息任务）\n");
//}
/////////////////////////////////////////////////////////////////////
//
////初始化
//void initTasks(task_t tasks[], int num)
//{
//    int i=0;
//    for(i = 0; i < num; i++) tasks[i] = NULL;
//}
////添加任务
//int addTask(task_t tasks[], task_t t)
//{
//    int i = 0;
//    for(; i < TASK_NUM; i++)
//    {
//        if(tasks[i] == NULL)
//        {
//            tasks[i] = t;
//            return 1;
//        }
//    }
//    return 0;
//}
////执行任务
//void executeTask(task_t tasks[], int num)
//{
//    int i=0;
//    for(i = 0; i < num; i++)
//    {
//        if(tasks[i]) tasks[i]();
//    }
//}
//
//void worker(int cnt)
//{
//    printf("I am child, pid: %d, cnt: %d\n", getpid(), cnt);
//}
//
//int main()
//{
//    task_t tasks[TASK_NUM];
//    initTasks(tasks, TASK_NUM);
//    addTask(tasks, download);
//    addTask(tasks, printLog);
//    addTask(tasks, show);
//    addTask(tasks,printLog);
//    pid_t id = fork();
//    if(id == 0){
//        // child
//        int cnt = 10;
//        while(cnt)
//        {
//            worker(cnt);
//            sleep(2);
//            cnt--;
//        }
//
//        exit(0);
//    }
//
//    while(1)
//    {
//        //father
//        int status = 0;
//        // 非阻塞等待，可以让等待方在返回的时候，顺便做做自己的事情
//        pid_t rid = waitpid(id, &status, WNOHANG);
//        if(rid > 0)
//        {
//            // wait success, child quit now;
//            printf("child quit success（孩子退出成功）, exit code: %d, exit signal: %d\n", (status>>8)&0xFF, status&0x7F);
//            break;
//        }
//        else if(rid == 0)
//        {
//            printf("##################################################\n");
//            // wait success, but child not quit
//            printf("child is alive, wait again, father do other thing（孩子还活着，再次等待，父亲做其他事情）....\n");
//            // 该函数内部，其实是回调式执行任务
//            executeTask(tasks, TASK_NUM); // 也可以在内部进行自己移除&&新增对应的任务
//            printf("##################################################\n");
//        }
//        else{
//            // wait failed, child unknow
//            printf("wait failed!等待失败");
//            break;
//        }
//
//        sleep(1);
//    }
//    return 0;
//}
//




//
//void fun()
//{
//    printf("fun()\n");
//    _exit(21);
//}
//
//int main()
//{
//    printf("测试退出码");
//    sleep(3);
//    _exit(1);
//
//}
//



//
//void fun()
//{
//    int cnt=5;
//    while(cnt--)
//    {
//
//        printf("Pid: %d, PPid: %d:%d\n",getpid(),getppid(),cnt);
//        sleep(1);
//    }
//}
//
//int main()
//{
//    pid_t id =fork();
//    if(id==0)
//    {
//        fun();
//        exit(0);
//    }
//
//    else
//    {
//        sleep(10);
//        pid_t rid=wait(NULL);
//        if(rid==id)
//        {
//            printf("wait :%d\n",getpid());
//        }
//    }
//    return 0;
//
//}
//




//void fun()
//{
//    printf("fun()\n");
//    //exit(21);
//}
//
//int main()
//{
//    fun();
//
//    printf("Pid: %d, PPid: %d\n",getpid(),getppid());
//
//    exit(12);
//    //return 0;
//}
